<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="author" content="esy">
    
    <meta name="description" content="esy">
    
    
    
    
    
    
    <title>HMM中的B值确定 | ESY</title>
    <link href="https://esyyes.github.io" rel="prefetch" />

    
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/aos.css">
<link rel="stylesheet" href="/css/style.css">

    
<script src="/js/jquery.min.js"></script>

    
<script src="/js/bootstrap.min.js"></script>

    
<script src="/js/aos.js"></script>

    
<script src="/js/highslide/highslide-full.min.js"></script>

    
<link rel="stylesheet" href="/js/highslide/highslide.css">

    <style type="text/css">
        @media (max-width: 768px) {
            body {
                background-color: #f0f0f0;
                background: url('/imgs/xsbg.gif');
                background-attachment: fixed;
            }
        }
    </style>
    
    <!--<script type="text/javascript">
      if (document.images) {
        var avatar = new Image();
        avatar.src = '/imgs/avatar.jpg'
        var previews = 'preview1.jpg,preview2.jpg,preview3.jpg,preview4.jpg'.split(',')
        var previewsPreLoad = []
        for(var i = 0; i < length; i++) {
          previewsPreLoad.push(new Image())
          previewsPreLoad[previewsPreLoad.length - 1].src = '/imgs/preview' + previews[i]
        }
      }
    </script>-->
<meta name="generator" content="Hexo 5.2.0"></head>
<body>
    <!-- 背景轮播图功能 -->
    <section class="hidden-xs">
    <ul class="cb-slideshow">
        <li><span>天若</span></li>
        <li><span>有情</span></li>
        <li><span>天亦老</span></li>
        <li><span>我为</span></li>
        <li><span>长者</span></li>
        <li><span>续一秒</span></li>
    </ul>
</section>
    <!-- 欧尼酱功能, 谁用谁知道 -->
    
    <div class="gal-menu gal-dropdown">
    <div class="circle" id="gal">
        <div class="ring">
            <a href="https://esyyes.github.io" class="menuItem" style="left: 50%; top: 15%;">首页</a>
            
            <a class="menuItem" style="left: 80.3109%; top: 32.5%;">下一页</a>
            
            <a href="/archives" class="menuItem" style="left: 80.3109%; top: 67.5%;">归档</a>
            <a href="/about" class="menuItem" style="left: 50%; top: 85%;">关于</a>
            <a href="/message" class="menuItem" style="left: 19.6891%; top: 67.5%;">留言板</a>

            
            <a class="menuItem" style="left: 19.6891%; top: 32.5%;">上一页</a>
            
        </div>
        <audio id="audio" src="/imgs/oni.mp3"></audio>
    </div>
</div>
    
    <header class="navbar navbar-inverse" id="gal-header">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed"
                    data-toggle="collapse" data-target=".bs-navbar-collapse"
                    aria-expanded="false">
                <span class="fa fa-lg fa-reorder"></span>
            </button>
            <a href="https://esyyes.github.io">
                
                <style>
                    #gal-header .navbar-brand {
                        height: 54px;
                        line-height: 24px;
                        font-size: 28px;
                        opacity: 1;
                        background-color: rgba(0,0,0,0);
                        text-shadow: 0 0 5px #fff,0 0 10px #fff,0 0 15px #fff,0 0 20px #228DFF,0 0 35px #228DFF,0 0 40px #228DFF,0 0 50px #228DFF,0 0 75px #228DFF;
                    }
                </style>
                <!-- 这里使用文字(navbar_text or config.title) -->
                <div class="navbar-brand">ESY</div>
                
            </a>
        </div>
        <div class="collapse navbar-collapse bs-navbar-collapse">
            <ul class="nav navbar-nav" id="menu-gal">
                
                
                <li class="">
                    <a href="/">
                        <i class="fa fa-home"></i>首页
                    </a>
                </li>
                
                
                
                <li class="">
                    <a href="/archives">
                        <i class="fa fa-archive"></i>归档
                    </a>
                </li>
                
                
                
                
                <li class="dropdown">
                    <!-- TODO 添加hover dropdown效果 -->
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"
                       aria-haspopup="true" aria-expanded="false" data-hover="dropdown">
                        <i class="fa fa-list"></i>分类
                    </a>
                    <ul class="dropdown-menu">
                        
                        
                        <li>
                            <a href="/categories/py-study/">py_study</a>
                        </li>
                        
                        <li>
                            <a href="/categories/nlp/">nlp</a>
                        </li>
                        
                        <li>
                            <a href="/categories/Graduation-work/">Graduation work</a>
                        </li>
                        
                        <li>
                            <a href="/categories/work/">work</a>
                        </li>
                        
                        <li>
                            <a href="/categories/hexo/">hexo</a>
                        </li>
                        
                        <li>
                            <a href="/categories/hexo%E5%AE%8C%E5%96%84/">-hexo完善</a>
                        </li>
                        
                        
                        <li>
                            <a href="/categories">...</a>
                        </li>
                        
                        
                    </ul>
                </li>
                
                
                
                
                
                <li class="dropdown">
                    <!-- TODO 添加hover dropdown效果 -->
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"
                       aria-haspopup="true" aria-expanded="false" data-hover="dropdown">
                        <i class="fa fa-tags"></i>标签
                    </a>
                    <ul class="dropdown-menu">
                        
                        
                        <li>
                            <a href="/tags/py-study/">py_study</a>
                        </li>
                        
                        <li>
                            <a href="/tags/nlp/">nlp</a>
                        </li>
                        
                        <li>
                            <a href="/tags/Graduation-work/">Graduation work</a>
                        </li>
                        
                        <li>
                            <a href="/tags/work/">work</a>
                        </li>
                        
                        <li>
                            <a href="/tags/hexo/">hexo</a>
                        </li>
                        
                        <li>
                            <a href="/tags/%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/">-个人博客搭建</a>
                        </li>
                        
                        
                        <li>
                            <a href="/tags">...</a>
                        </li>
                        
                        
                    </ul>
                </li>
                
                
                
                
                <li class="">
                    <a href="/about">
                        <i class="fa fa-user"></i>关于我
                    </a>
                </li>
                
                
            </ul>
        </div>
    </div>
</header>
    <div id="gal-body">
        <div class="container">
            <div class="row">
                <div class="col-md-8 gal-right" id="mainstay">
                    
<article class="article well article-body" id="article">
    <div class="breadcrumb">
        <i class="fa fa-home"></i>
        <a href="https://esyyes.github.io">ESY</a>
        >
        <span>HMM中的B值确定</span>
    </div>
    <!-- 大型设备详细文章 -->
    <div class="hidden-xs">
        <div class="title-article">
            <h1>
                <a href="/2020/07/08/python%20work/HMM%E4%B8%AD%E7%9A%84B%E5%80%BC%E7%A1%AE%E5%AE%9A/">HMM中的B值确定</a>
            </h1>
        </div>
        <div class="tag-article">
            
            <span class="label label-gal">
                <i class="fa fa-tags"></i>
                
                <a href="/tags/work/">work</a>
                
            </span>
            
            <span class="label label-gal">
                <i class="fa fa-calendar"></i> 2020-07-08
            </span>
            
        </div>
    </div>
    <!-- 小型设备详细文章 -->
    <div class="visible-xs">
        <center>
            <div class="title-article">
                <h4>
                    <a href="/2020/07/08/python%20work/HMM%E4%B8%AD%E7%9A%84B%E5%80%BC%E7%A1%AE%E5%AE%9A/">HMM中的B值确定</a>
                </h4>
            </div>
            <p>
                <i class="fa fa-calendar"></i> 2020-07-08
            </p>
            <p>
                
                <i class="fa fa-tags"></i>
                
                <a href="/tags/work/">work</a>
                
                
                
            </p>
        </center>
    </div>
    <div class="content-article">
        <h1 id="HMM中的B值确定"><a href="#HMM中的B值确定" class="headerlink" title="HMM中的B值确定"></a>HMM中的B值确定</h1><p>1．隐马尔可夫模型是关于时序的概率模型，描述由一个隐藏的马尔可夫链随机生成不可观测的状态的序列，再由各个状态随机生成一个观测而产生观测的序列的过程。</p>
<p>隐马尔可夫模型由初始状态概率向$\pi$、状态转移概率矩阵$A$和观测概率矩阵$B$决定。因此，隐马尔可夫模型可以写成$\lambda=(A, B, \pi)$。</p>
<p>隐马尔可夫模型是一个生成模型，表示状态序列和观测序列的联合分布，但是状态序列是隐藏的，不可观测的。</p>
<p>隐马尔可夫模型可以用于标注，这时状态对应着标记。标注问题是给定观测序列预测其对应的标记序列。</p>
<p>2．概率计算问题。给定模型$\lambda=(A, B, \pi)$和观测序列$O＝(o_1，o_2,…,o_T)$，计算在模型$\lambda$下观测序列$O$出现的概率$P(O|\lambda)$。前向-后向算法是通过递推地计算前向-后向概率可以高效地进行隐马尔可夫模型的概率计算。</p>
<p>3．学习问题。已知观测序列$O＝(o_1，o_2,…,o_T)$，估计模型$\lambda=(A, B, \pi)$参数，使得在该模型下观测序列概率$P(O|\lambda)$最大。即用极大似然估计的方法估计参数。Baum-Welch算法，也就是EM算法可以高效地对隐马尔可夫模型进行训练。它是一种非监督学习算法。</p>
<p>4．预测问题。已知模型$\lambda=(A, B, \pi)$和观测序列$O＝(o_1，o_2,…,o_T)$，求对给定观测序列条件概率$P(I|O)$最大的状态序列$I＝(i_1，i_2,…,i_T)$。维特比算法应用动态规划高效地求解最优路径，即概率最大的状态序列。</p>
<p>在本次实验中，HMM模型，主要确定了QVAOPI，而直接用逻辑回归模型，进行建模运算时，B值的状态概率会出现100这种情况，导致HMM的似然函数的概率不会改变</p>
<p>array([[846,   0,   0],<br>       [ 60,   0,   0],<br>       [ 27,   0,   0]], dtype=int64)</p>
<p>参考</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">HiddenMarkov</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">forward</span>(<span class="params">self, Q, V, A, B, O, PI</span>):</span>  <span class="comment"># 使用前向算法</span></span><br><span class="line">        N = <span class="built_in">len</span>(Q)  <span class="comment">#可能存在的状态数量</span></span><br><span class="line">        M = <span class="built_in">len</span>(O)  <span class="comment"># 观测序列的大小</span></span><br><span class="line">        alphas = np.zeros((N, M))  <span class="comment"># alpha值</span></span><br><span class="line">        T = M  <span class="comment"># 有几个时刻，有几个观测序列，就有几个时刻</span></span><br><span class="line">        <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(T):  <span class="comment"># 遍历每一时刻，算出alpha值</span></span><br><span class="line">            indexOfO = V.index(O[t])  <span class="comment"># 找出序列对应的索引</span></span><br><span class="line">            <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">                <span class="keyword">if</span> t == <span class="number">0</span>:  <span class="comment"># 计算初值</span></span><br><span class="line">                    alphas[i][t] = PI[t][i] * B[i][indexOfO]  <span class="comment"># P176（10.15）</span></span><br><span class="line">                    print(</span><br><span class="line">                        <span class="string">&#x27;alpha1(%d)=p%db%db(o1)=%f&#x27;</span> % (i, i, i, alphas[i][t]))</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    alphas[i][t] = np.dot(</span><br><span class="line">                        [alpha[t - <span class="number">1</span>] <span class="keyword">for</span> alpha <span class="keyword">in</span> alphas],</span><br><span class="line">                        [a[i] <span class="keyword">for</span> a <span class="keyword">in</span> A]) * B[i][indexOfO]  <span class="comment"># 对应P176（10.16）</span></span><br><span class="line">                    print(<span class="string">&#x27;alpha%d(%d)=[sigma alpha%d(i)ai%d]b%d(o%d)=%f&#x27;</span> %</span><br><span class="line">                          (t, i, t - <span class="number">1</span>, i, i, t, alphas[i][t]))</span><br><span class="line">                    <span class="comment"># print(alphas)</span></span><br><span class="line">        P = np.<span class="built_in">sum</span>([alpha[M - <span class="number">1</span>] <span class="keyword">for</span> alpha <span class="keyword">in</span> alphas])  <span class="comment"># P176(10.17)</span></span><br><span class="line">        <span class="comment"># alpha11 = pi[0][0] * B[0][0]    #代表a1(1)</span></span><br><span class="line">        <span class="comment"># alpha12 = pi[0][1] * B[1][0]    #代表a1(2)</span></span><br><span class="line">        <span class="comment"># alpha13 = pi[0][2] * B[2][0]    #代表a1(3)</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">backward</span>(<span class="params">self, Q, V, A, B, O, PI</span>):</span>  <span class="comment"># 后向算法</span></span><br><span class="line">        N = <span class="built_in">len</span>(Q)  <span class="comment"># 可能存在的状态数量</span></span><br><span class="line">        M = <span class="built_in">len</span>(O)  <span class="comment"># 观测序列的大小</span></span><br><span class="line">        betas = np.ones((N, M))  <span class="comment"># beta</span></span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">            print(<span class="string">&#x27;beta%d(%d)=1&#x27;</span> % (M, i))</span><br><span class="line">        <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(M - <span class="number">2</span>, <span class="number">-1</span>, <span class="number">-1</span>):</span><br><span class="line">            indexOfO = V.index(O[t + <span class="number">1</span>])  <span class="comment"># 找出序列对应的索引</span></span><br><span class="line">            <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">                betas[i][t] = np.dot(</span><br><span class="line">                    np.multiply(A[i], [b[indexOfO] <span class="keyword">for</span> b <span class="keyword">in</span> B]),</span><br><span class="line">                    [beta[t + <span class="number">1</span>] <span class="keyword">for</span> beta <span class="keyword">in</span> betas])</span><br><span class="line">                realT = t + <span class="number">1</span></span><br><span class="line">                realI = i + <span class="number">1</span></span><br><span class="line">                print(</span><br><span class="line">                    <span class="string">&#x27;beta%d(%d)=[sigma a%djbj(o%d)]beta%d(j)=(&#x27;</span> %</span><br><span class="line">                    (realT, realI, realI, realT + <span class="number">1</span>, realT + <span class="number">1</span>),</span><br><span class="line">                    end=<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">                <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">                    print(</span><br><span class="line">                        <span class="string">&quot;%.2f*%.2f*%.2f+&quot;</span> % (A[i][j], B[j][indexOfO],</span><br><span class="line">                                             betas[j][t + <span class="number">1</span>]),</span><br><span class="line">                        end=<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">                print(<span class="string">&quot;0)=%.3f&quot;</span> % betas[i][t])</span><br><span class="line">        <span class="comment"># print(betas)</span></span><br><span class="line">        indexOfO = V.index(O[<span class="number">0</span>])</span><br><span class="line">        P = np.dot(</span><br><span class="line">            np.multiply(PI, [b[indexOfO] <span class="keyword">for</span> b <span class="keyword">in</span> B]),</span><br><span class="line">            [beta[<span class="number">0</span>] <span class="keyword">for</span> beta <span class="keyword">in</span> betas])</span><br><span class="line">        print(<span class="string">&quot;P(O|lambda)=&quot;</span>, end=<span class="string">&quot;&quot;</span>)</span><br><span class="line">        <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">            print(</span><br><span class="line">                <span class="string">&quot;%.1f*%.1f*%.5f+&quot;</span> % (PI[<span class="number">0</span>][i], B[i][indexOfO], betas[i][<span class="number">0</span>]),</span><br><span class="line">                end=<span class="string">&quot;&quot;</span>)</span><br><span class="line">        print(<span class="string">&quot;0=%f&quot;</span> % P)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">viterbi</span>(<span class="params">self, Q, V, A, B, O, PI</span>):</span></span><br><span class="line">        N = <span class="built_in">len</span>(Q)  <span class="comment">#可能存在的状态数量</span></span><br><span class="line">        M = <span class="built_in">len</span>(O)  <span class="comment"># 观测序列的大小</span></span><br><span class="line">        deltas = np.zeros((N, M))</span><br><span class="line">        psis = np.zeros((N, M))</span><br><span class="line">        I = np.zeros((<span class="number">1</span>, M))</span><br><span class="line">        <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(M):</span><br><span class="line">            realT = t + <span class="number">1</span></span><br><span class="line">            indexOfO = V.index(O[t])  <span class="comment"># 找出序列对应的索引</span></span><br><span class="line">            <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(N):</span><br><span class="line">                realI = i + <span class="number">1</span></span><br><span class="line">                <span class="keyword">if</span> t == <span class="number">0</span>:</span><br><span class="line">                    deltas[i][t] = PI[<span class="number">0</span>][i] * B[i][indexOfO]</span><br><span class="line">                    psis[i][t] = <span class="number">0</span></span><br><span class="line">                    print(<span class="string">&#x27;delta1(%d)=pi%d * b%d(o1)=%.2f * %.2f=%.2f&#x27;</span> %</span><br><span class="line">                          (realI, realI, realI, PI[<span class="number">0</span>][i], B[i][indexOfO],</span><br><span class="line">                           deltas[i][t]))</span><br><span class="line">                    print(<span class="string">&#x27;psis1(%d)=0&#x27;</span> % (realI))</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    deltas[i][t] = np.<span class="built_in">max</span>(</span><br><span class="line">                        np.multiply([delta[t - <span class="number">1</span>] <span class="keyword">for</span> delta <span class="keyword">in</span> deltas],</span><br><span class="line">                                    [a[i] <span class="keyword">for</span> a <span class="keyword">in</span> A])) * B[i][indexOfO]</span><br><span class="line">                    print(</span><br><span class="line">                        <span class="string">&#x27;delta%d(%d)=max[delta%d(j)aj%d]b%d(o%d)=%.2f*%.2f=%.5f&#x27;</span></span><br><span class="line">                        % (realT, realI, realT - <span class="number">1</span>, realI, realI, realT,</span><br><span class="line">                           np.<span class="built_in">max</span>(</span><br><span class="line">                               np.multiply([delta[t - <span class="number">1</span>] <span class="keyword">for</span> delta <span class="keyword">in</span> deltas],</span><br><span class="line">                                           [a[i] <span class="keyword">for</span> a <span class="keyword">in</span> A])), B[i][indexOfO],</span><br><span class="line">                           deltas[i][t]))</span><br><span class="line">                    psis[i][t] = np.argmax(</span><br><span class="line">                        np.multiply(</span><br><span class="line">                            [delta[t - <span class="number">1</span>] <span class="keyword">for</span> delta <span class="keyword">in</span> deltas],</span><br><span class="line">                            [a[i]</span><br><span class="line">                             <span class="keyword">for</span> a <span class="keyword">in</span> A])) + <span class="number">1</span>  <span class="comment">#由于其返回的是索引，因此应+1才能和正常的下标值相符合。</span></span><br><span class="line">                    print(<span class="string">&#x27;psis%d(%d)=argmax[delta%d(j)aj%d]=%d&#x27;</span> %</span><br><span class="line">                          (realT, realI, realT - <span class="number">1</span>, realI, psis[i][t]))</span><br><span class="line">        print(deltas)</span><br><span class="line">        print(psis)</span><br><span class="line">        I[<span class="number">0</span>][M - <span class="number">1</span>] = np.argmax([delta[M - <span class="number">1</span>] <span class="keyword">for</span> delta <span class="keyword">in</span> deltas</span><br><span class="line">                                 ]) + <span class="number">1</span>  <span class="comment">#由于其返回的是索引，因此应+1才能和正常的下标值相符合。</span></span><br><span class="line">        print(<span class="string">&#x27;i%d=argmax[deltaT(i)]=%d&#x27;</span> % (M, I[<span class="number">0</span>][M - <span class="number">1</span>]))</span><br><span class="line">        <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(M - <span class="number">2</span>, <span class="number">-1</span>, <span class="number">-1</span>):</span><br><span class="line">            I[<span class="number">0</span>][t] = psis[<span class="built_in">int</span>(I[<span class="number">0</span>][t + <span class="number">1</span>]) - <span class="number">1</span>][t + <span class="number">1</span>]</span><br><span class="line">            print(<span class="string">&#x27;i%d=psis%d(i%d)=%d&#x27;</span> % (t + <span class="number">1</span>, t + <span class="number">2</span>, t + <span class="number">2</span>, I[<span class="number">0</span>][t]))</span><br><span class="line">        print(<span class="string">&quot;状态序列I：&quot;</span>, I)</span><br></pre></td></tr></table></figure>

<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">Q = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line">V = [<span class="string">&#x27;红&#x27;</span>, <span class="string">&#x27;白&#x27;</span>]</span><br><span class="line">A = [[<span class="number">0.5</span>, <span class="number">0.2</span>, <span class="number">0.3</span>], [<span class="number">0.3</span>, <span class="number">0.5</span>, <span class="number">0.2</span>], [<span class="number">0.2</span>, <span class="number">0.3</span>, <span class="number">0.5</span>]]</span><br><span class="line">B = [[<span class="number">0.5</span>, <span class="number">0.5</span>], [<span class="number">0.4</span>, <span class="number">0.6</span>], [<span class="number">0.7</span>, <span class="number">0.3</span>]]</span><br><span class="line">O = [<span class="string">&#x27;红&#x27;</span>, <span class="string">&#x27;白&#x27;</span>, <span class="string">&#x27;红&#x27;</span>, <span class="string">&#x27;红&#x27;</span>, <span class="string">&#x27;白&#x27;</span>, <span class="string">&#x27;红&#x27;</span>, <span class="string">&#x27;白&#x27;</span>, <span class="string">&#x27;白&#x27;</span>]</span><br><span class="line">PI = [[<span class="number">0.2</span>, <span class="number">0.3</span>, <span class="number">0.5</span>]]</span><br><span class="line">HMM = HiddenMarkov()</span><br><span class="line"><span class="comment"># HMM.forward(Q, V, A, B, O, PI)</span></span><br><span class="line"><span class="comment"># HMM.backward(Q, V, A, B, O, PI)</span></span><br><span class="line">HMM.viterbi(Q, V, A, B, O, PI)</span><br><span class="line">HMM.forward(Q, V, A, B, O, PI)</span><br><span class="line">HMM.backward(Q, V, A, B, O, PI)</span><br></pre></td></tr></table></figure>

<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># -*- coding: utf-8 -*-</span></span><br><span class="line"><span class="comment"># @Time     : 2020/7/8</span></span><br><span class="line"><span class="comment"># @Author   : esy</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> warnings</span><br><span class="line"></span><br><span class="line"><span class="comment"># 忽略警告</span></span><br><span class="line">warnings.filterwarnings(<span class="string">&quot;ignore&quot;</span>)</span><br><span class="line">data = pd.read_excel(<span class="string">&#x27;data1&#x27;</span> + <span class="string">&#x27;.xlsx&#x27;</span>)</span><br><span class="line">data.fillna(<span class="number">0</span>, inplace=<span class="literal">True</span>)</span><br><span class="line">list_data = np.array(data).tolist()</span><br><span class="line">X = pd.get_dummies(data.iloc[<span class="number">0</span>:<span class="built_in">len</span>(data), <span class="number">3</span>:<span class="number">7</span>])</span><br><span class="line"></span><br><span class="line">list_y1 = [<span class="built_in">int</span>(list_data[i][<span class="number">2</span>]) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data))]</span><br><span class="line">y1_mean = np.array(list_y1).mean()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 用均值作为状态的划分</span></span><br><span class="line">Y_X = [<span class="number">0</span> <span class="keyword">if</span> list_data[i][<span class="number">2</span>] &lt; y1_mean <span class="keyword">else</span> <span class="number">1</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data))]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 序列阶段的划分</span></span><br><span class="line"><span class="comment"># 将14个时期取平均值</span></span><br><span class="line">list_z_y = []</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">int</span>(<span class="built_in">len</span>(data)/<span class="number">14</span>)):</span><br><span class="line">    y1 = []</span><br><span class="line">    <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data)):</span><br><span class="line">        <span class="keyword">if</span> <span class="number">14</span> * i &lt;= j &lt; <span class="number">14</span> * (i + <span class="number">1</span>):</span><br><span class="line">            y1.append(list_data[j][<span class="number">2</span>])</span><br><span class="line">    list_z_y.append(np.array(y1).mean())</span><br><span class="line"></span><br><span class="line"><span class="comment"># 14个值的平均值小于1即为0</span></span><br><span class="line"><span class="comment"># 还是用均值作为状态的划分</span></span><br><span class="line">Y_Z = [<span class="number">0</span> <span class="keyword">if</span> list_z_y[i] &lt; y1_mean <span class="keyword">else</span> <span class="number">1</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(list_z_y))]</span><br><span class="line">num = <span class="number">0</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(Y_Z)):</span><br><span class="line">    <span class="keyword">if</span> Y_Z[i] == <span class="number">1</span>:</span><br><span class="line">        num += <span class="number">1</span></span><br><span class="line">print(<span class="string">f&#x27;总数目：<span class="subst">&#123;<span class="built_in">len</span>(Y_Z)&#125;</span>, 阶段0的数目<span class="subst">&#123;<span class="built_in">len</span>(Y_Z) - num&#125;</span>, 阶段1的数目<span class="subst">&#123;num&#125;</span>&#x27;</span>)</span><br><span class="line"></span><br><span class="line">num_1 = <span class="number">0</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data)):</span><br><span class="line">    <span class="keyword">if</span> Y_X[i] == <span class="number">1</span>:</span><br><span class="line">        num_1 += <span class="number">1</span></span><br><span class="line">print(<span class="string">f&#x27;序列中出现1阶段的次数<span class="subst">&#123;num_1&#125;</span>&#x27;</span>)</span><br><span class="line"></span><br><span class="line">Y = []</span><br><span class="line"><span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">int</span>(<span class="built_in">len</span>(data)/<span class="number">14</span>)):</span><br><span class="line">    x1 = []</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data)):</span><br><span class="line">        <span class="keyword">if</span> <span class="number">14</span> * j &lt;= i &lt; <span class="number">14</span> * (j + <span class="number">1</span>):</span><br><span class="line">            x1.append(<span class="built_in">int</span>(list_data[i][<span class="number">2</span>]))</span><br><span class="line">    Y.append(x1)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算1状态时，出现1的概率</span></span><br><span class="line">num_2 = <span class="number">0</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(Y_Z)):</span><br><span class="line">    <span class="keyword">if</span> Y_Z[i] == <span class="number">1</span>:</span><br><span class="line">        <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">14</span>):</span><br><span class="line">            <span class="keyword">if</span> Y[i][j] == <span class="number">1</span>:</span><br><span class="line">                num_2 += <span class="number">1</span></span><br><span class="line">print(<span class="string">f&#x27;状态1中出现1的次数<span class="subst">&#123;num_2&#125;</span>&#x27;</span>)</span><br><span class="line"></span><br><span class="line">print(<span class="string">f&#x27;阶段1中出现1的概率<span class="subst">&#123;num_2/(num*<span class="number">14</span>)&#125;</span>&#x27;</span>)</span><br><span class="line">B = [[<span class="number">1</span> - (num_1 - num_2) / ((<span class="built_in">len</span>(Y_Z) - num) * <span class="number">14</span>), (num_1 - num_2) / ((<span class="built_in">len</span>(Y_Z) - num) * <span class="number">14</span>)],</span><br><span class="line">     [<span class="number">1</span> - num_2 / (num * <span class="number">14</span>), num_2 / (num * <span class="number">14</span>)]]</span><br><span class="line">print(<span class="string">f&#x27;在阈值线为平均值下的&#x27;</span></span><br><span class="line">      <span class="string">f&#x27;<span class="subst">&#123;B&#125;</span>&#x27;</span>)</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure>

<p>利用平均值作为阈值时的B值：</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[[<span class="number">0.9118926758520667</span>, <span class="number">0.08810732414793329</span>], </span><br><span class="line"></span><br><span class="line">[<span class="number">0.8428571428571429</span>, <span class="number">0.15714285714285714</span>]]</span><br></pre></td></tr></table></figure>

<p>利用1作为阈值时的B值为：</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Y_X = [<span class="number">0</span> <span class="keyword">if</span> list_data[i][<span class="number">2</span>] &lt; <span class="number">1</span> <span class="keyword">else</span> <span class="number">1</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(data))]</span><br><span class="line">Y_Z = [<span class="number">0</span> <span class="keyword">if</span> list_z_y[i] &lt; <span class="number">1</span> <span class="keyword">else</span> <span class="number">1</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(list_z_y))]</span><br><span class="line"></span><br><span class="line">[[<span class="number">0.78535170413343</span>, <span class="number">0.21464829586656997</span>], </span><br><span class="line">[<span class="number">0.8428571428571429</span>, <span class="number">0.15714285</span></span><br><span class="line"> <span class="number">714285714</span>]]</span><br></pre></td></tr></table></figure>

<p>比较下最大似然值</p>
<p>均值下的结果</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">初始概率矩阵[[<span class="number">0.9041184041184042</span>, <span class="number">0.09588159588159584</span>]]</span><br><span class="line">状态转移概率矩阵：[[<span class="number">0.9964114832535885</span>, <span class="number">0.0035885167464114833</span>], [<span class="number">0.26804123711340205</span>, <span class="number">0.7319587628865979</span>]]</span><br><span class="line">均值下的似然估计值为：    <span class="number">-955.2942841591449</span></span><br><span class="line">分类为<span class="number">2</span>均值下的BIC为：<span class="number">-1028.7801594684208</span></span><br><span class="line">--------------------</span><br><span class="line">参数估计</span><br><span class="line">状态转移概率矩阵的系数为：[[ <span class="number">1.29445779e-05</span>  <span class="number">5.27657348e-06</span> <span class="number">-2.44868582e-02</span>  <span class="number">3.68198497e+00</span>]]</span><br><span class="line">状态转移概率矩阵的偏差为：[<span class="number">-4.52277323</span>]</span><br><span class="line">观察状态概率转移矩阵的系数为：[[ <span class="number">0.00304877</span> <span class="number">-0.00165371</span>]]</span><br><span class="line">观察状态概率转移矩阵的偏差为：[<span class="number">-2.00454762</span>]</span><br></pre></td></tr></table></figure>

<p>1值下的结果</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">初始概率矩阵[[<span class="number">0.7918275418275418</span>, <span class="number">0.20817245817245822</span>]]</span><br><span class="line">状态转移概率矩阵：[[<span class="number">0.984869325997249</span>, <span class="number">0.015130674002751032</span>], [<span class="number">0.4029126213592233</span>, <span class="number">0.5970873786407767</span>]]</span><br><span class="line"><span class="number">1</span>值下的似然估计值为：    <span class="number">-1589.5001457084938</span></span><br><span class="line">分类为<span class="number">2</span>阈值为<span class="number">1</span>下的BIC为：<span class="number">-1662.9860210177699</span></span><br><span class="line">--------------------</span><br><span class="line">参数估计</span><br><span class="line">状态转移概率矩阵的系数为：[[ <span class="number">3.54342024e-05</span>  <span class="number">6.64259922e-05</span> <span class="number">-4.34313674e-03</span>  <span class="number">3.76444931e+00</span>]]</span><br><span class="line">状态转移概率矩阵的偏差为：[<span class="number">-2.26616719</span>]</span><br><span class="line">观察状态概率转移矩阵的系数为：[[<span class="number">-0.02040833</span> <span class="number">-0.00606398</span>]]</span><br><span class="line">观察状态概率转移矩阵的偏差为：[<span class="number">-1.81251543</span>]</span><br></pre></td></tr></table></figure>

<p>主要还是根据阈值线，来进行判定，BIC这些值的大小</p>
<p><img src="http://i0.hdslb.com/bfs/article/72162a4abb1e6b985db79d35a2c2d4b9caaf6a3a.jpg"></p>

    </div>
</article>


                </div>
                <aside class="col-md-4 gal-left" id="sidebar">
    <!-- 此为sidebar的搜索框, 非搜索结果页面 -->
<aside id="sidebar-search">
    <div class="search hidden-xs" data-aos="fade-up" data-aos-duration="2000">
        <form class="form-inline clearfix" id="search-form" method="get"
              action="/search/index.html">
            <input type="text" name="s" class="form-control" id="searchInput" placeholder="搜索文章~" autocomplete="off">
            <button class="btn btn-danger btn-gal" type="submit">
                <i class="fa fa-search"></i>
            </button>
        </form>
    </div>
</aside>
    <aside id="sidebar-author">
    <div class="panel panel-gal" data-aos="flip-right" data-aos-duration="3000">
        <div class="panel-heading" style="text-align: center">
            <i class="fa fa-quote-left"></i>
            esy
            <i class="fa fa-quote-right"></i>
        </div>
        <div class="author-panel text-center">
            <img src="/imgs/avatar.jpg" width="140" height="140"
                 alt="个人头像" class="author-image">
            <p class="author-description"><p>esy</p>
</p>
        </div>
    </div>
</aside>
    
    <aside id="sidebar-recent_comments">
    <div class="panel panel-gal recent hidden-xs" data-aos="fade-up" data-aos-duration="2000">
        <div class="panel-heading">
            <i class="fa fa-comments"></i>
            最新评论
            <i class="fa fa-times-circle panel-remove"></i>
            <i class="fa fa-chevron-circle-up panel-toggle"></i>
        </div>
        <ul class="list-group list-group-flush"></ul>
    </div>
</aside>
    
    <!-- 要配置好leancloud才能开启此小工具 -->
    
    
    <aside id="sidebar-recent_posts">
    <div class="panel panel-gal recent hidden-xs" data-aos="fade-up" data-aos-duration="2000">
        <div class="panel-heading">
            <i class="fa fa-refresh"></i>
            近期文章
            <i class="fa fa-times-circle panel-remove"></i>
            <i class="fa fa-chevron-circle-up panel-toggle"></i>
        </div>
        <ul class="list-group list-group-flush">
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/11/05/python%20work/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/">最小二乘法</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/11/05/python%20work/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E4%B9%A0-%E7%AC%AC%E4%B8%80%E7%AB%A0/">统计学习--第一章</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/11/04/python%20work/hello-world/">Hello World</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/11/03/python%20work/%E5%88%86%E7%B1%BB%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%AF%84%E4%BC%B0%E6%8C%87%E6%A0%87/">分类模型的评估指标</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/10/21/python%20work/10-21-%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80/">10-21 爬虫基础</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/25/python%20work/CRF%E7%9A%84%E6%95%B4%E4%BD%93%E6%B5%81%E7%A8%8B%E7%BB%93%E6%9E%9C/">CRF的整体流程结果</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/25/python%20work/nlp-crf%E6%A8%A1%E5%9E%8B/">nlp_crf模型</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/25/python%20work/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E9%97%AE%E9%A2%983/">数学建模问题3</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/25/python%20work/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E9%97%AE%E9%A2%982/">数学建模问题2</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/25/python%20work/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E9%97%AE%E9%A2%981/">数学建模问题1</a>
                </span>
            </li>
            
        </ul>
    </div>
</aside>
    
    
    <aside id="sidebar-rand_posts">
    <div class="panel panel-gal recent hidden-xs" data-aos="fade-up" data-aos-duration="2000">
        <div class="panel-heading">
            <i class="fa fa-refresh"></i>
            随机文章
            <i class="fa fa-times-circle panel-remove"></i>
            <i class="fa fa-chevron-circle-up panel-toggle"></i>
        </div>
        <ul class="list-group list-group-flush">
            
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/10/21/python%20work/10-21-%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80/">10-21 爬虫基础</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/02/28/python%20work/2-28%E6%B1%87%E6%8A%A5/">2-28汇报</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/09/03/python%20work/DATA%E6%95%B0%E6%8D%AE%E7%BB%98%E5%88%B6/">DATA数据绘制</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/07/28/python%20work/GUI%E7%95%8C%E9%9D%A2%E7%9A%84%E5%AE%8C%E5%96%84/">GUI界面的完善</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2019/11/24/python%20work/pyhon%E5%9F%BA%E7%A1%80-%E6%A8%A1%E5%9D%97/">pyhon基础--模块</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/05/26/python%20work/python-%E5%85%A5%E9%97%A8%E5%A4%8D%E4%B9%A0%E4%B9%8B%E5%87%BD%E6%95%B0/">python_入门复习之函数</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/02/08/python%20work/python%E2%80%94%E2%80%94%E6%BB%91%E5%8A%A8%E5%88%87%E7%89%87%E4%B9%8B%E6%95%B0%E7%BB%84/">python——滑动切片之数组</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/06/09/python%20work/%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86/">数据预处理</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/06/24/python%20work/%E7%BB%98%E5%88%B6%E7%89%B9%E5%BE%81%E9%87%8D%E8%A6%81%E5%BA%A6%E7%AD%9B%E9%80%89%E7%BB%93%E6%9E%9C/">绘制特征重要度筛选结果</a>
                </span>
            </li>
            
            <li class="list-group-item">
                <span class="post-title">
                    <a href="/2020/07/09/python%20work/HMM%E4%B9%8B%E6%95%B0%E6%8D%AE%E7%9A%84%E5%A4%84%E7%90%86/">HMM之数据的处理</a>
                </span>
            </li>
            
        </ul>
    </div>
</aside>
    
    
    <aside id="gal-sets">
        <div class="panel panel-gal hidden-xs" data-aos="fade-up" data-aos-duration="2000">
            <ul class="nav nav-pills pills-gal">

                
                <li>
                    <a href="/2020/07/08/python%20work/HMM%E4%B8%AD%E7%9A%84B%E5%80%BC%E7%A1%AE%E5%AE%9A/index.html#sidebar-tags" data-toggle="tab" id="tags-tab">热门标签</a>
                </li>
                
                
                <li>
                    <a href="/2020/07/08/python%20work/HMM%E4%B8%AD%E7%9A%84B%E5%80%BC%E7%A1%AE%E5%AE%9A/index.html#sidebar-friend-links" data-toggle="tab" id="friend-links-tab">友情链接</a>
                </li>
                
                
                <li>
                    <a href="/2020/07/08/python%20work/HMM%E4%B8%AD%E7%9A%84B%E5%80%BC%E7%A1%AE%E5%AE%9A/index.html#sidebar-links" data-toggle="tab" id="links-tab">个人链接</a>
                </li>
                
            </ul>
            <div class="tab-content">
                
                <div class="cloud-tags tab-pane nav bs-sidenav fade" id="sidebar-tags">
    
    <a href="/tags/py-study/" style="font-size: 18.34489177124008px;" class="tag-cloud-link">py_study</a>
    
    <a href="/tags/nlp/" style="font-size: 11.982243253205386px;" class="tag-cloud-link">nlp</a>
    
    <a href="/tags/Graduation-work/" style="font-size: 18.34371709599196px;" class="tag-cloud-link">Graduation work</a>
    
    <a href="/tags/work/" style="font-size: 17.953025855356735px;" class="tag-cloud-link">work</a>
    
    <a href="/tags/hexo/" style="font-size: 17.413739324601337px;" class="tag-cloud-link">hexo</a>
    
    <a href="/tags/%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/" style="font-size: 16.920073942081164px;" class="tag-cloud-link">-个人博客搭建</a>
    
    <a href="/tags/malab-%E6%AF%95%E4%B8%9A/" style="font-size: 13.874774521962054px;" class="tag-cloud-link">-malab -毕业</a>
    
    <a href="/tags/python-%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/" style="font-size: 14.336378001769926px;" class="tag-cloud-link">-python -人工智能</a>
    
    <a href="/tags/python/" style="font-size: 16.986712368978747px;" class="tag-cloud-link">python</a>
    
    <a href="/tags/python/" style="font-size: 12.77504210137279px;" class="tag-cloud-link">-python</a>
    
    <a href="/tags/mathematical-modeling/" style="font-size: 16.024732269419243px;" class="tag-cloud-link">mathematical modeling</a>
    
    <a href="/tags/statistical-learning/" style="font-size: 16.355087500927706px;" class="tag-cloud-link">statistical learning</a>
    
</div>
                
                
                <div class="friend-links tab-pane nav bs-sidenav fade" id="sidebar-friend-links">
    
    <li>
        <a href="http://kdays.net/days/" target="_blank">KDays Forum</a>
    </li>
    
    <li>
        <a href="http://www.gal123.com/" target="_blank">绅士导航♂</a>
    </li>
    
    <li>
        <a href="http://www.moe123.com/" target="_blank">萌导航</a>
    </li>
    
</div>
                
                
                <div class="links tab-pane nav bs-sidenav fade" id="sidebar-links">
    
    <li>
        <a href="https://github.com/ZEROKISEKI/" target="_blank">Github</a>
    </li>
    
    <li>
        <a href="https://coding.net/u/SORA1" target="_blank">Coding</a>
    </li>
    
    <li>
        <a href="https://www.zhihu.com/people/aonosora/activities" target="_blank">知乎</a>
    </li>
    
</div>
                
            </div>
        </div>
    </aside>
    
</aside>
            </div>
        </div>
    </div>
    <footer id="gal-footer">
    <div class="container">
        Copyright © 2018 esy Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>.&nbsp;Theme by <a href="https://github.com/ZEROKISEKI" target="_blank">AONOSORA</a>
    </div>
</footer>

<!-- 回到顶端 -->
<div id="gal-gotop">
    <i class="fa fa-angle-up"></i>
</div>
</body>

<script src="/js/activate-power-mode.js"></script>

<script>

    // 配置highslide
	hs.graphicsDir = '/js/highslide/graphics/'
    hs.outlineType = "rounded-white";
    hs.dimmingOpacity = 0.8;
    hs.outlineWhileAnimating = true;
    hs.showCredits = false;
    hs.captionEval = "this.thumb.alt";
    hs.numberPosition = "caption";
    hs.align = "center";
    hs.transitions = ["expand", "crossfade"];
    hs.lang.number = '共%2张图, 当前是第%1张';
    hs.addSlideshow({
      interval: 5000,
      repeat: true,
      useControls: true,
      fixedControls: "fit",
      overlayOptions: {
        opacity: 0.75,
        position: "bottom center",
        hideOnMouseOut: true
      }
    })

    // 初始化aos
    AOS.init({
      duration: 1000,
      delay: 0,
      easing: 'ease-out-back'
    });

</script>
<script>
	POWERMODE.colorful = 'true';    // make power mode colorful
	POWERMODE.shake = 'true';       // turn off shake
	// TODO 这里根据具体情况修改
	document.body.addEventListener('input', POWERMODE);
</script>
<script>
    window.slideConfig = {
      prefix: '/imgs/slide/background',
      ext: 'jpg',
      maxCount: '6'
    }
</script>

<script src="/js/hs.js"></script>
<script src="/js/blog.js"></script>



<script src="/js/oni.js"></script>




</html>